JavaScript Primer 暗黙な型変換
https://gyazo.com/51ccf23737c36fe563a7c90cb8c3b2e0
読書メモ
型変換は,あくまでプリミティブ型に対してのみに留めるべき
暗黙的に型変換できない
文字列 → 数値
NaNになってしまった場合の処理を書く必要がある
code:js
const userInput = "任意の文字列";
const num = Number.parseInt(userInput, 10);
if (!Number.isNaN(num)) {
console.log("NaNではない値にパースできた", num);
}
何と演算しても結果はNaNになる
自分自身と一致しない
黙的な型変換の中でももっとも避けたい値
理由: 何と演算しても結果がNaNとなってしまうため,デバッグしにくい
対策
関数側(呼ばれる側)で,Number型の値以外を受けつけなくする
数に数値以外の値がある場合は例外を投げるという処理を追加する
関数を呼び出す側で,Number型の値のみを渡すようにする
↑2つやる
暗黙的な型変換は意図しない結果となりやすいため避ける
真偽値を得るには、明示的な型変換以外の方法もある
bad
code:js
// 空文字列かどうかを判定
function isEmptyString(str) {
// strがfalsyな値なら、isEmptyString関数はtrueを返す
return !Boolean(str);
}
// 空文字列列の場合は、trueを返す
console.log(isEmptyString("")); // => true
// falsyな値の場合は、trueを返す
console.log(isEmptyString(0)); // => true bad
// undefinedの場合は、trueを返す
console.log(isEmptyString()); // => true
ok: 正確に書く必要がある
code:js
// 空文字列かどうかを判定
function isEmptyString(str) {
// String型でlengthが0の値の場合はtrueを返す
return typeof str === "string" && str.length === 0;
}
console.log(isEmptyString("")); // => true
// falsyな値でも正しく判定できる
console.log(isEmptyString(0)); // => false
console.log(isEmptyString()); // => false